Programmatically applying labels to nodes in cluster orchestration platforms

ABSTRACT

Systems, methods, and computer program products to programmatically apply labels to nodes in a cluster orchestration platform managing a cluster comprising a plurality of nodes. A microservice may be submitted to the cluster orchestration platform. The cluster orchestration platform may execute the microservice on a first node of the plurality of nodes. The microservice may receive, from a virtual machine manager, an instance identifier of a virtual machine instance executing the first node and the microservice. The microservice may receive, from the virtual machine manager based on the instance identifier, a plurality of labels applied to the virtual machine instance. The microservice may validate each received label based on at least one rule. The microservice may receive, from the cluster orchestration platform, an identifier of the first node in the cluster orchestration platform. The microservice may apply each received label to the first node in the cluster orchestration platform.

TECHNICAL FIELD

Embodiments herein generally relate to cluster orchestration platforms,and more specifically, to programmatically applying labels to nodes incluster orchestration platforms.

BACKGROUND

Cluster orchestration platforms may allow nodes to be tagged with labelsfor various purposes, such as submitting a job to a labeled node,resource management, and the like. However, manually labeling each nodein a cluster is a time consuming and error-prone process. Configuringstartup scripts to label each node is also undesirable as doing sorequires significant modifications to each script to apply the labels asneeded.

SUMMARY

Embodiments disclosed herein provide systems, methods, articles ofmanufacture, and computer-readable media for programmatically applyinglabels to nodes in cluster orchestration platforms. In one example, amicroservice may be submitted to a cluster orchestration platformmanaging a cluster comprising a plurality of nodes, the microservice toexecute on one of the plurality of nodes. The cluster orchestrationplatform may execute the microservice on a first node of the pluralityof nodes. The microservice may receive, from a virtual machine manager,an instance identifier of a virtual machine instance executing the firstnode and the microservice. The microservice may receive, from thevirtual machine manager based on the instance identifier, a plurality oflabels applied to the virtual machine instance. The microservice mayvalidate each received label based on at least one rule for applyinglabels in the cluster orchestration platform. The microservice mayreceive, from the cluster orchestration platform, an identifier of thefirst node in the cluster orchestration platform. The microservice mayprovide, to the cluster orchestration platform, an indication specifyingto apply each received label to the first node in the clusterorchestration platform. The cluster orchestration platform may applyeach received label to the first node in the cluster orchestrationplatform.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A-1B illustrate embodiments of a system configured toprogrammatically apply labels to nodes in a cluster orchestrationplatform.

FIGS. 2A-2B illustrate embodiments of programmatically applying labelsto nodes in a cluster orchestration platform.

FIG. 3 illustrates an embodiment of a first logic flow.

FIG. 4 illustrates an embodiment of a second logic flow.

FIG. 5 illustrates an embodiment of a third logic flow.

FIG. 6 illustrates an embodiment of a computing architecture.

DETAILED DESCRIPTION

Embodiments disclosed herein provide techniques to programmaticallylabel (or tag) nodes in a cluster orchestration platform managing one ormore clusters of nodes. Generally, embodiments disclosed herein leveragea flexible microservice that can be deployed to any node in the clusterorchestration platform and apply labels to the node. The microservicemay be scheduled to execute prior to any other jobs that may besubmitted to perform computational tasks on a given node. Once executed,the microservice may receive, from a virtual machine manager, aninstance identifier of a virtual machine within which the first node andthe microservice execute. The virtual machine may be tagged with one ormore labels. The microservice may receive the labels applied to thevirtual machine instance from the virtual machine manager. Themicroservice may validate each label based on at least one rule such assyntax rules and/or regular expressions. The microservice may receive anidentifier of the first node in the cluster orchestration platform. Themicroservice may then specify to apply each received label to the firstnode in the cluster orchestration platform.

Advantageously, embodiments disclosed herein provide lightweight,flexible techniques to tag nodes with labels in a cluster orchestrationplatform. By leveraging a microservice to tag any node in any type ofcluster orchestration platform, embodiments disclosed herein do notrequire modification of startup scripts and/or source code of individualnodes, cluster orchestration platforms, jobs, or any other associatedcomponents. Furthermore, embodiments disclosed herein do not requiremodification to settings and/or configurations to label the nodes.Further still, by labeling nodes before processes are scheduled forprocessing on the nodes, the microservice may ensure that the processesare scheduled to the correct nodes.

With general reference to notations and nomenclature used herein, one ormore portions of the detailed description which follows may be presentedin terms of program procedures executed on a computer or network ofcomputers. These procedural descriptions and representations are used bythose skilled in the art to most effectively convey the substances oftheir work to others skilled in the art. A procedure is here, andgenerally, conceived to be a self-consistent sequence of operationsleading to a desired result. These operations are those requiringphysical manipulations of physical quantities. Usually, though notnecessarily, these quantities take the form of electrical, magnetic, oroptical signals capable of being stored, transferred, combined,compared, and otherwise manipulated. It proves convenient at times,principally for reasons of common usage, to refer to these signals asbits, values, elements, symbols, characters, terms, numbers, or thelike. It should be noted, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to those quantities.

Further, these manipulations are often referred to in terms, such asadding or comparing, which are commonly associated with mentaloperations performed by a human operator. However, no such capability ofa human operator is necessary, or desirable in most cases, in any of theoperations described herein that form part of one or more embodiments.Rather, these operations are machine operations. Useful machines forperforming operations of various embodiments include digital computersas selectively activated or configured by a computer program storedwithin that is written in accordance with the teachings herein, and/orinclude apparatus specially constructed for the required purpose or adigital computer. Various embodiments also relate to apparatus orsystems for performing these operations. These apparatuses may bespecially constructed for the required purpose. The required structurefor a variety of these machines will be apparent from the descriptiongiven.

Reference is now made to the drawings, wherein like reference numeralsare used to refer to like elements throughout. In the followingdescription, for the purpose of explanation, numerous specific detailsare set forth in order to provide a thorough understanding thereof. Itmay be evident, however, that the novel embodiments can be practicedwithout these specific details. In other instances, well-knownstructures and devices are shown in block diagram form in order tofacilitate a description thereof. The intention is to cover allmodification, equivalents, and alternatives within the scope of theclaims.

FIG. 1A depicts a schematic of an exemplary system 100, consistent withdisclosed embodiments. As shown, the system 100 includes one or morehost systems 110 and one or more user systems 120 communicably coupledby a network 130. The host systems 110 and the user systems 120 arerepresentative of any type of computing system, such as servers, computeclusters, desktop computers, smartphones, tablet computers, wearabledevices, laptop computers, workstations, portable gaming devices,virtualized computing systems, and the like. The host systems 110 andthe user systems 120 include processors, memory, storage, networkinterfaces, and/or other components not pictured for the sake ofclarity.

The system 100 is generally configured to provide management ofcontainerized workloads and services using clusters comprising one ormore of the host systems 110. More specifically, as shown, host system110-1 includes a master node 111 executing an instance of a clusterorchestration platform 102. The cluster orchestration platform 102generally manages the deployment of one or more nodes 112 on one or moreof the host systems 110-1 through 110-N, where N is a positive integer.The nodes 112 individually and/or collectively may form one or moreclusters of nodes 112. Although a single node 112 is depicted on hostsystem 110-2, any number of nodes 112 may be deployed on a given hostsystem 110-N. For example, host system 110-2 may include ten nodes 112,while host system 110-N may execute five nodes 112. The clusterorchestration platform 102 may further manage the scheduling of one ormore processes (such as the processes 114), services, jobs, and/orworkloads on the nodes 112. In this regard, the nodes 112 may beconsidered as worker nodes that perform one or more processing tasks.One example of a cluster orchestration platform 102 is Kubernetes®.However, the disclosure is equally applicable to other types of clusterorchestration platforms.

As stated, the host systems 110-1 through 110-N may be physical and/orvirtualized computing systems. In one embodiment, the host systems 110-1through 110-N are virtualized computing systems executing on physicalcomputing systems (not pictured) provided by a cloud computing platform.In such an embodiment, a virtual machine manager (VMM) 116 of the cloudcomputing platform may create, run, and generally manage the virtualhost systems 110-1 through 110-N. One example of a VMM 116 is ahypervisor. Although depicted as executing in the host system 110-2, insome embodiments, the VMM 116 may execute external to the host system110-2.

By operating at the container level, the orchestration platform 102 maygenerally provide deployment, scaling, load balancing, logging, andmonitoring in the system 100. For example, a user may submit one or morejobs, workloads, and/or processes (collectively referred to as processes114 herein) for deployment to the orchestration platform 102 via theuser interface 121. In such an example, the orchestration platform 102may schedule the process 114 on one or more nodes 112 executing on oneor more of the host systems 110-1 through 110-N. In some examples, theorchestration platform 102 may need to deploy a new node 112 to a hostsystem 110-N to accommodate the received process 114.

In deploying one or more new nodes 112 and/or scheduling one or moreprocesses 114, the orchestration platform 102 may receive inputspecifying where to deploy the nodes 112 and/or schedule the processes114. For example, the user may specify to deploy an accounting process114 on all nodes that are tagged with one or more accounting labels (notpictured in FIG. 1A). The labeling of a given node 112 may require inputspecifying a key:value pair. Conventionally, the labeling of a node 112requires a significant amount of human intervention, such as labelingeach node 112 manually with the appropriate label and/or programming theorchestration platform 102, nodes 112, and/or the processes 114 to applyone or more labels.

Advantageously, however, embodiments disclosed herein provide a labelingservice 113. The labeling service 113 is a microservice that may bedeployed by the orchestration platform 102. For example, the labelingservice 113 may be scheduled for execution when a given node 112 isdeployed to a host system 110-2 through 110-N. As another example, auser may specify to schedule the labeling service 113 for execution onone or more nodes 112 of one or more host systems 110-2 through 110-N.In some embodiments, the orchestration platform 102 schedules thelabeling service 113 to execute prior to any other process 114 on thecorresponding node 112. In one embodiment, the labeling service 113 isscheduled as a DaemonSet, which allows the labeling service 113 toexecute prior to the other processes 114 on the node 112. Doing soallows the labeling service 113 to label the nodes 112 before anyprocesses 114 are scheduled, deployed, and/or executed on each node 112(e.g., by the orchestration platform 102). For example, theorchestration platform 102 may determine whether a particular type oflabel (e.g., “GPU”) is applied to the nodes 112 when schedulingdifferent processes 114 (e.g., processes that require a graphicsprocessing unit (GPU) for processing) to the nodes 112. In someembodiments, if the labeling service 113 does not label the nodes 112before the orchestration platform 102 schedules processes 114 to thenodes 112, the orchestration platform 102 may do so with incompleteand/or incorrect labels applied to the nodes 112. As such, theorchestration platform 102 may be at risk for scheduling processes 114to incorrect nodes 112 (e.g., by deploying a process 114 to a node 112that does not have the appropriate configuration and/or resources).However, by scheduling the labeling service 113 prior to the otherprocesses 114, these risks are minimized and/or eliminated.

To label a given node 112, the labeling service 113 may communicate withthe VMM 116. More specifically, the labeling service 113 may request,from the VMM 116, the host ID 117 of the host system 110-2. The host ID117 may uniquely identify each virtualized host system 110-2 through110-N managed by the VMM 116. Once the labeling service 113 receives thehost ID 117 of the host system 110-2, the labeling service 113 mayrequest one or more labels applied to the host system 110-2 from the VMM116 using the host ID 117. In response, the VMM 116 may provide thelabeling service 113 with one or more labels 118-1 that have beenapplied to the host system 110-2. The labels 118-1 may include labelsthat are programmatically generated (e.g., by the VMM 116 and/or othersoftware, hardware, and/or firmware) as well as labels that are providedby a user. The labels 118-1 may be a string of characters formingkey:value pairs of any length.

Once received, the labeling service 113 may validate each received label118-1 based on one or more rules for labeling nodes 112. For example,the rules may include syntax rules, formatting rules, data type rules,and the like. If a given label 118-1 does not comply with one or morerules, the labeling service 113 may attempt to modify the label 118-1 tocause the label 118-1 to comply with the one or more rules. For example,the labeling service 113 may apply one or more regular expressions tothe label 118-1 to modify the label 118-1 such that the modified label118-1 complies with the one or more rules. In some embodiments, thelabeling service 113 may filter the received labels 118-1 according toone or more desired labels. For example, the labeling service 113 mayfilter the labels 118-1 to exclude all labels 118-1 except for a desired“nodetype:programming” label. By filtering the labels 118-1, thelabeling service 113 may subsequently apply only the desired labels tothe nodes 112 (e.g., the “nodetype:programming” label), while notapplying other undesired labels to the nodes 112.

The labeling service 113 may then determine an identifier of the node112 that the labeling service 113 process is executing on. For example,the labeling service 113 may request the node ID 103 of the node 112from the orchestration platform 102. Generally, the node IDs 103 includea unique identifier for each node 112 in the system 100. Theorchestration platform 102 may then return the node ID 103 of the node112 to the labeling service 113. In one embodiment, the labeling service113 requests the node ID 103 through the orchestration agent 115, whichis an agent that communicates with the orchestration platform 102.Therefore, in such embodiments, the labeling service 113 requests thenode ID 103 from the orchestration agent 115, which requests andreceives the node ID 103 from the orchestration platform 102 andprovides the received node ID 103 to the labeling service 113.

The labeling service 113 may then instruct the orchestration agent 115to apply the validated labels 118-1 to the node 112 having the receivednode ID 103. The orchestration agent 115 may then apply the labels 118-1to the node 112. In one embodiment, the labeling service 113communicates with the orchestration agent 115 to cause the labels 118-1to be applied to the node 112. Therefore, in such embodiments, theorchestration agent 115 and/or the orchestration platform 102 may applythe labels 118-1 to the node 112.

FIG. 1B depicts an embodiment where the labeling service 113 has labeledthe node 112 of host system 110-2 with the labels 118-2, which maycorrespond to the labels 118-1 of the VMM 116 that have been validatedby the labeling service 113. The labels 118-2 may further include alabel indicating that the labeling service 113 has completed thelabeling of the node 112. Doing so allows the labeling service 113 torefrain from re-labeling the node 112 based on identifying the labelindicating the labeling has been completed. The labeling service 113 maythen terminate execution.

FIG. 2A is a schematic 200 depicting an example host system 110-3 whichincludes nodes 112-1 through 112-N, where N is a positive integer. Asshown, the node 112-1 includes the labeling service 113, which mayexecute prior to other processes 114 on the node 112-1 to tag the node112-1 with one or more labels 118-1. As stated, to apply the labels118-1 to the node 112-1, the labeling service 113 may receive the hostID 117 of the host system 110-3 from the VMM 116. The labeling service113 may then receive the labels 118-1 from the VMM 116 using thereceived host ID 117. The labeling service 113 may then validate thereceived labels 118-1 using one or more rules and attempt to modify anylabels 118-1 that do not satisfy the rules. For example, as shown, anexample label 118-1 is “Label1:legal$”, which includes the “$”character. If the rules only permit alphanumeric characters, thelabeling service 113 may remove the “$” character from the label 118-1,e.g., using a regular expression. Doing so causes the modified label118-1 to comply with the rule that labels only include alphanumericcharacters.

The labeling service 113 may then receive the node ID 103 of the node112-1 from the orchestration platform 102 and/or the orchestration agent115. The labeling service 113 may then instruct the orchestrationplatform 102 and/or the orchestration agent 115 to apply the validatedlabels 118-1 to the node 112-1 using the received node ID 103 of thenode 112-1. The orchestration platform 102 and/or the orchestrationagent 115 may then cause the labels 118-1 to be applied to the node112-1.

FIG. 2B is a schematic 210 illustrating an embodiment where the labelingservice 113 has programmatically applied the labels 118-2 to the node112-1. As shown, the labels 118-2 are based on the validated labels118-1. For example, as shown, the labels 118-2 include the validatedlabel “Label1:legal” rather than the label “Label1:legal$” of the labels118-1 that did not comply with the rules.

FIG. 3 illustrates an embodiment of a logic flow 300. The logic flow 300may be representative of some or all of the operations executed by oneor more embodiments described herein. For example, the logic flow 300may include some or all of the operations to programmatically labelnodes in cluster orchestration platforms. Embodiments are not limited inthis context.

As shown, the logic flow 300 begins at block 310, where the labelingservice 113 is submitted to the cluster orchestration platform 102 forexecution on at least one node 112 of a plurality of nodes. At block320, the cluster orchestration platform 102 may schedule the labelingservice 113 to execute on a first node 112-N on a first host system110-N, where N is a positive integer. The host system 110-N may be avirtualized host system. One or more labels 118 may be applied to thehost system 110-N. At block 330, the labeling service 113 may receive anidentifier (e.g., a host ID 117) of the host system 110-N from the VMM116.

At block 340, the labeling service 113 receives a plurality of labels118 applied to the host system 110-N from the VMM 116. At block 350, thelabeling service 113 may validate the labels received at block 340,e.g., based on one or more rules. At block 360, the labeling service 113receives a node ID 103 of the node 112-N from the orchestration platform102. At block 370, the labeling service 113 instructs the orchestrationplatform 102 to apply the validated labels 118 to the first node 112-Nusing the node ID 103 of the node 112-N received at block 360. Doing socauses the validated labels 118 to be applied to the first node 112-N.

FIG. 4 illustrates an embodiment of a logic flow 400. The logic flow 400may be representative of some or all of the operations executed by oneor more embodiments described herein. For example, the logic flow 400may include some or all of the operations to validate labels.Embodiments are not limited in this context.

As shown, the logic flow 400 begins at block 410, where the labelingservice 113 may receive one or more selected labels 118. For example, anadministrator may specify one or more desired label key:pair values touse as a filter against the labels 118 received from the VMM 116. Atblock 420, the labeling service 113 may filter the labels 118 receivedfrom the VMM 116 using the one or more selected labels received at block410. Doing so filters, or drops, labels 118 that do not equal the one ormore selected labels. At block 430, the labeling service 113 determinesthat at least one filtered label 118 is not valid, e.g., based on one ormore rules.

At block 440, the labeling service 113 applies one or more regularexpressions to modify the at least one invalid label identified at block430. At block 450, the labeling service 113 determines that the label118 as modified by the regular expression is valid, e.g., satisfies allrules for validating labels. At block 460, the labeling service 113 mayapply the modified label 118 to the target node 112.

FIG. 5 illustrates an embodiment of a logic flow 500. The logic flow 500may be representative of some or all of the operations executed by oneor more embodiments described herein. For example, the logic flow 500may include some or all of the operations performed to schedule thelabeling service 113 for execution on a node 112. Embodiments are notlimited in this context.

As shown, the logic flow 500 begins at block 510, where theorchestration platform 102 selects a first node 112-1 of a plurality ofnodes 112 to schedule the labeling service 113 on. At block 520, theorchestration platform 102 schedules the labeling service 113 to runprior to all other processes 114 on the first node 112-1. At block 530,the labeling service 113 completes the labeling of the first node 112-1with validated labels 118. At block 540, the labeling service 113 labelsthe first node 112-1 with a label indicating that the labeling of thefirst node 112-1 is complete. The label may be any predefined label toindicate that the labeling is complete. Doing so may eliminate redundantlabeling of the first node 112-1. The labeling service 113 may thenterminate execution.

FIG. 6 illustrates an embodiment of an exemplary computing architecture600 comprising a computing system 602 that may be suitable forimplementing various embodiments as previously described. In variousembodiments, the computing architecture 600 may comprise or beimplemented as part of an electronic device. In some embodiments, thecomputing architecture 600 may be representative, for example, of asystem that implements one or more components of the system 100. In someembodiments, computing system 602 may be representative, for example, ofthe host systems 110 and user systems 120 of the system 100. Theembodiments are not limited in this context. More generally, thecomputing architecture 600 is configured to implement all logic,applications, systems, methods, apparatuses, and functionality describedherein with reference to FIGS. 1-6.

As used in this application, the terms “system” and “component” and“module” are intended to refer to a computer-related entity, eitherhardware, a combination of hardware and software, software, or softwarein execution, examples of which are provided by the exemplary computingarchitecture 600. For example, a component can be, but is not limited tobeing, a process running on a computer processor, a computer processor,a hard disk drive, multiple storage drives (of optical and/or magneticstorage medium), an object, an executable, a thread of execution, aprogram, and/or a computer. By way of illustration, both an applicationrunning on a server and the server can be a component. One or morecomponents can reside within a process and/or thread of execution, and acomponent can be localized on one computer and/or distributed betweentwo or more computers. Further, components may be communicativelycoupled to each other by various types of communications media tocoordinate operations. The coordination may involve the uni-directionalor bi-directional exchange of information. For instance, the componentsmay communicate information in the form of signals communicated over thecommunications media. The information can be implemented as signalsallocated to various signal lines. In such allocations, each message isa signal. Further embodiments, however, may alternatively employ datamessages. Such data messages may be sent across various connections.Exemplary connections include parallel interfaces, serial interfaces,and bus interfaces.

The computing system 602 includes various common computing elements,such as one or more processors, multi-core processors, co-processors,memory units, chipsets, controllers, peripherals, interfaces,oscillators, timing devices, video cards, audio cards, multimediainput/output (I/O) components, power supplies, and so forth. Theembodiments, however, are not limited to implementation by the computingsystem 602.

As shown in FIG. 6, the computing system 602 comprises a processor 604,a system memory 606 and a system bus 608. The processor 604 can be anyof various commercially available computer processors, including withoutlimitation an AMD® Athlon®, Duron® and Opteron® processors; ARM®application, embedded and secure processors; IBM® and Motorola®DragonBall® and PowerPC® processors; IBM and Sony® Cell processors;Intel® Celeron®, Core®, Core (2) Duo®, Itanium®, Pentium®, Xeon®, andXScale® processors; and similar processors. Dual microprocessors,multi-core processors, and other multi processor architectures may alsobe employed as the processor 604.

The system bus 608 provides an interface for system componentsincluding, but not limited to, the system memory 606 to the processor604. The system bus 608 can be any of several types of bus structurethat may further interconnect to a memory bus (with or without a memorycontroller), a peripheral bus, and a local bus using any of a variety ofcommercially available bus architectures. Interface adapters may connectto the system bus 608 via a slot architecture. Example slotarchitectures may include without limitation Accelerated Graphics Port(AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA),Micro Channel Architecture (MCA), NuBus, Peripheral ComponentInterconnect (Extended) (PCI(X)), PCI Express, Personal Computer MemoryCard International Association (PCMCIA), and the like.

The system memory 606 may include various types of computer-readablestorage media in the form of one or more higher speed memory units, suchas read-only memory (ROM), random-access memory (RAM), dynamic RAM(DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), staticRAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM),electrically erasable programmable ROM (EEPROM), flash memory (e.g., oneor more flash arrays), polymer memory such as ferroelectric polymermemory, ovonic memory, phase change or ferroelectric memory,silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or opticalcards, an array of devices such as Redundant Array of Independent Disks(RAID) drives, solid state memory devices (e.g., USB memory, solid statedrives (SSD) and any other type of storage media suitable for storinginformation. In the illustrated embodiment shown in FIG. 6, the systemmemory 606 can include non-volatile memory 610 and/or volatile memory612. A basic input/output system (BIOS) can be stored in thenon-volatile memory 610.

The computing system 602 may include various types of computer-readablestorage media in the form of one or more lower speed memory units,including an internal (or external) hard disk drive (HDD) 614, amagnetic floppy disk drive (FDD) 616 to read from or write to aremovable magnetic disk 618, and an optical disk drive 620 to read fromor write to a removable optical disk 622 (e.g., a CD-ROM or DVD). TheHDD 614, FDD 616 and optical disk drive 620 can be connected to thesystem bus 608 by a HDD interface 624, an FDD interface 626 and anoptical drive interface 628, respectively. The HDD interface 624 forexternal drive implementations can include at least one or both ofUniversal Serial Bus (USB) and IEEE 1394 interface technologies. Thecomputing system 602 is generally is configured to implement all logic,systems, methods, apparatuses, and functionality described herein withreference to FIGS. 1-5.

The drives and associated computer-readable media provide volatileand/or nonvolatile storage of data, data structures, computer-executableinstructions, and so forth. For example, a number of program modules canbe stored in the drives and memory units 610, 612, including anoperating system 630, one or more application programs 632, otherprogram modules 634, and program data 636. In one embodiment, the one ormore application programs 632, other program modules 634, and programdata 636 can include, for example, the various applications and/orcomponents of the system 100, e.g., the master node 111, the nodes 112,the orchestration platform 102, the node IDs 103, the labeling service113, the processes 114, the orchestration agent 115, the VMM 116, thehost IDs 117, the labels 118, the user system 120, and the userinterface 121.

A user can enter commands and information into the computing system 602through one or more wire/wireless input devices, for example, a keyboard638 and a pointing device, such as a mouse 640. Other input devices mayinclude microphones, infra-red (IR) remote controls, radio-frequency(RF) remote controls, game pads, stylus pens, card readers, dongles,finger print readers, gloves, graphics tablets, joysticks, keyboards,retina readers, touch screens (e.g., capacitive, resistive, etc.),trackballs, trackpads, sensors, styluses, and the like. These and otherinput devices are often connected to the processor 604 through an inputdevice interface 642 that is coupled to the system bus 608, but can beconnected by other interfaces such as a parallel port, IEEE 1394 serialport, a game port, a USB port, an IR interface, and so forth.

A monitor 644 or other type of display device is also connected to thesystem bus 608 via an interface, such as a video adaptor 646. Themonitor 644 may be internal or external to the computing system 602. Inaddition to the monitor 644, a computer typically includes otherperipheral output devices, such as speakers, printers, and so forth.

The computing system 602 may operate in a networked environment usinglogical connections via wire and/or wireless communications to one ormore remote computers, such as a remote computer 648. The remotecomputer 648 can be a workstation, a server computer, a router, apersonal computer, portable computer, microprocessor-based entertainmentappliance, a peer device or other common network node, and typicallyincludes many or all of the elements described relative to the computingsystem 602, although, for purposes of brevity, only a memory/storagedevice 650 is illustrated. The logical connections depicted includewire/wireless connectivity to a local area network (LAN) 652 and/orlarger networks, for example, a wide area network (WAN) 654. Such LANand WAN networking environments are commonplace in offices andcompanies, and facilitate enterprise-wide computer networks, such asintranets, all of which may connect to a global communications network,for example, the Internet. In embodiments, the network 130 of FIG. 1 isone or more of the LAN 652 and the WAN 654.

When used in a LAN networking environment, the computing system 602 isconnected to the LAN 652 through a wire and/or wireless communicationnetwork interface or adaptor 656. The adaptor 656 can facilitate wireand/or wireless communications to the LAN 652, which may also include awireless access point disposed thereon for communicating with thewireless functionality of the adaptor 656.

When used in a WAN networking environment, the computing system 602 caninclude a modem 658, or is connected to a communications server on theWAN 654, or has other means for establishing communications over the WAN654, such as by way of the Internet. The modem 658, which can beinternal or external and a wire and/or wireless device, connects to thesystem bus 608 via the input device interface 642. In a networkedenvironment, program modules depicted relative to the computing system602, or portions thereof, can be stored in the remote memory/storagedevice 650. It will be appreciated that the network connections shownare exemplary and other means of establishing a communications linkbetween the computers can be used.

The computing system 602 is operable to communicate with wired andwireless devices or entities using the IEEE 802 family of standards,such as wireless devices operatively disposed in wireless communication(e.g., IEEE 802.16 over-the-air modulation techniques). This includes atleast Wi-Fi (or Wireless Fidelity), WiMax, and Bluetooth™ wirelesstechnologies, among others. Thus, the communication can be a predefinedstructure as with a conventional network or simply an ad hoccommunication between at least two devices. Wi-Fi networks use radiotechnologies called IEEE 802.11x (a, b, g, n, etc.) to provide secure,reliable, fast wireless connectivity. A Wi-Fi network can be used toconnect computers to each other, to the Internet, and to wire networks(which use IEEE 802.3-related media and functions).

Various embodiments may be implemented using hardware elements, softwareelements, or a combination of both. Examples of hardware elements mayinclude processors, microprocessors, circuits, circuit elements (e.g.,transistors, resistors, capacitors, inductors, and so forth), integratedcircuits, application specific integrated circuits (ASIC), programmablelogic devices (PLD), digital signal processors (DSP), field programmablegate array (FPGA), logic gates, registers, semiconductor device, chips,microchips, chip sets, and so forth. Examples of software may includesoftware components, programs, applications, computer programs,application programs, system programs, machine programs, operatingsystem software, middleware, firmware, software modules, routines,subroutines, functions, methods, procedures, software interfaces,application program interfaces (API), instruction sets, computing code,computer code, code segments, computer code segments, words, values,symbols, or any combination thereof. Determining whether an embodimentis implemented using hardware elements and/or software elements may varyin accordance with any number of factors, such as desired computationalrate, power levels, heat tolerances, processing cycle budget, input datarates, output data rates, memory resources, data bus speeds and otherdesign or performance constraints.

One or more aspects of at least one embodiment may be implemented byrepresentative instructions stored on a machine-readable medium whichrepresents various logic within the processor, which when read by amachine causes the machine to fabricate logic to perform the techniquesdescribed herein. Such representations, known as “IP cores” may bestored on a tangible, machine readable medium and supplied to variouscustomers or manufacturing facilities to load into the fabricationmachines that make the logic or processor. Some embodiments may beimplemented, for example, using a machine-readable medium or articlewhich may store an instruction or a set of instructions that, ifexecuted by a machine, may cause the machine to perform a method and/oroperations in accordance with the embodiments. Such a machine mayinclude, for example, any suitable processing platform, computingplatform, computing device, processing device, computing system,processing system, computer, processor, or the like, and may beimplemented using any suitable combination of hardware and/or software.The machine-readable medium or article may include, for example, anysuitable type of memory unit, memory device, memory article, memorymedium, storage device, storage article, storage medium and/or storageunit, for example, memory, removable or non-removable media, erasable ornon-erasable media, writeable or re-writeable media, digital or analogmedia, hard disk, floppy disk, Compact Disk Read Only Memory (CD-ROM),Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW),optical disk, magnetic media, magneto-optical media, removable memorycards or disks, various types of Digital Versatile Disk (DVD), a tape, acassette, or the like. The instructions may include any suitable type ofcode, such as source code, compiled code, interpreted code, executablecode, static code, dynamic code, encrypted code, and the like,implemented using any suitable high-level, low-level, object-oriented,visual, compiled and/or interpreted programming language.

The foregoing description of example embodiments has been presented forthe purposes of illustration and description. It is not intended to beexhaustive or to limit the present disclosure to the precise formsdisclosed. Many modifications and variations are possible in light ofthis disclosure. It is intended that the scope of the present disclosurebe limited not by this detailed description, but rather by the claimsappended hereto. Future filed applications claiming priority to thisapplication may claim the disclosed subject matter in a differentmanner, and may generally include any set of one or more limitations asvariously disclosed or otherwise demonstrated herein.

What is claimed is:
 1. An apparatus, comprising: a processor circuit;and a memory storing instructions which when executed by the processorcircuit cause the processor circuit to: submit, to a clusterorchestration platform managing a cluster comprising a plurality ofnodes, a microservice to execute on one of the plurality of nodes;execute, by the cluster orchestration platform, the microservice on afirst node of the plurality of nodes; receive, by the microservice froma virtual machine manager, an instance identifier of a virtual machineinstance executing the first node and the microservice; receive, by themicroservice from the virtual machine manager based on the instanceidentifier, a plurality of labels applied to the virtual machineinstance; validate, by the microservice, each received label based on atleast one rule for applying labels in the cluster orchestrationplatform; receive, by the microservice from the cluster orchestrationplatform, an identifier of the first node in the cluster orchestrationplatform; provide, by the microservice to the cluster orchestrationplatform, an indication specifying to apply each received label to thefirst node in the cluster orchestration platform; apply, by the clusterorchestration platform, each received label to the first node in thecluster orchestration platform; and apply, by the microservice to thefirst node in the cluster orchestration platform, a label specifyingthat labeling of the first node in the cluster orchestration platformhas been completed.
 2. The apparatus of claim 1, the memory storinginstructions which when executed by the processor circuit cause theprocessor circuit to: schedule, by the cluster orchestration platform,the microservice to execute prior to a plurality of jobs scheduled toexecute on the first node.
 3. The apparatus of claim 1, the memorystoring instructions which when executed by the processor circuit causethe processor circuit to: receive, by the microservice, a first label ofthe plurality of labels as a filter value; filter, by the microservice,the plurality of labels based on the first label of the plurality oflabels, the filtering to exclude at least a second label of theplurality of labels; and apply, by the microservice, the first label tothe first node in the cluster orchestration platform, the microserviceto refrain from applying the second label to the first node in thecluster orchestration platform based on the filtering.
 4. The apparatusof claim 1, the memory storing instructions which when executed by theprocessor circuit cause the processor circuit to: receive, by themicroservice, a first label of the plurality of labels; determine, bythe microservice, that the first label is not of a syntax required bythe at least one rule for applying labels; and refrain, by themicroservice, from applying the first label to the first node in thecluster orchestration platform based on the first label not being of therequired syntax.
 5. The apparatus of claim 4, the memory storinginstructions which when executed by the processor circuit cause theprocessor circuit to: modify, by the microservice, the first label usinga regular expression; determine, by the microservice, that the modifiedfirst label is of the syntax required by the at least one rule forapplying labels; and apply, by the microservice, the modified firstlabel to the first node in the cluster orchestration platform.
 6. Theapparatus of claim 1, wherein the plurality of nodes comprisevirtualized computing systems and physical computing systems, whereinthe cluster orchestration platform schedules the microservice to executeon the first node.
 7. A non-transitory computer-readable storage mediumstoring computer-readable instructions executable by a processor circuitto cause the processor circuit to: receive, by a cluster orchestrationplatform managing a cluster comprising a plurality of nodes, amicroservice to execute on one of the plurality of nodes; execute, bythe cluster orchestration platform, the microservice on a virtualmachine instance executing on a first node of the plurality of nodes;receive, by the microservice from a virtual machine manager, an instanceidentifier of a virtual machine instance executing the first node andthe microservice; receive, by the microservice from the virtual machinemanager based on the instance identifier, a plurality of labels appliedto the virtual machine instance; validate, by the microservice, eachreceived label based on at least one rule for applying labels in thecluster orchestration platform; provide, by the cluster orchestrationplatform to the microservice, an identifier of the first node in thecluster orchestration platform; receive, by the cluster orchestrationplatform from the microservice, an indication specifying to apply eachreceived label to the first node in the cluster orchestration platform;apply, by the cluster orchestration platform, each received label to thefirst node in the cluster orchestration platform; and apply, by themicroservice to the first node in the cluster orchestration platform, alabel specifying that labeling of the first node in the clusterorchestration platform has been completed.
 8. The computer-readablestorage medium of claim 7, storing computer-readable instructionsexecutable by the processor circuit to cause the processor circuit to:schedule, by the cluster orchestration platform, the microservice toexecute prior to a plurality of jobs scheduled to execute on the firstnode.
 9. The computer-readable storage medium of claim 7, storingcomputer-readable instructions executable by the processor circuit tocause the processor circuit to: receive, by the microservice, a firstlabel of the plurality of labels as a filter value; filter, by themicroservice, the plurality of labels based on the first label of theplurality of labels, the filtering to exclude at least a second label ofthe plurality of labels; and apply, by the microservice, the first labelto the first node in the cluster orchestration platform, themicroservice to refrain from applying the second label to the first nodein the cluster orchestration platform based on the filtering.
 10. Thecomputer-readable storage medium of claim 7, storing computer-readableinstructions executable by the processor circuit to cause the processorcircuit to: receive, by the microservice, a first label of the pluralityof labels; determine, by the microservice, that the first label is notof a syntax required by the at least one rule for applying labels; andrefrain, by the microservice, from applying the first label to the firstnode in the cluster orchestration platform based on the first label notbeing of the required syntax.
 11. The computer-readable storage mediumof claim 10, storing computer-readable instructions executable by theprocessor circuit to cause the processor circuit to: modify, by themicroservice, the first label using a regular expression; determine, bythe microservice, that the modified first label is of the syntaxrequired by the at least one rule for applying labels; and apply, by themicroservice, the modified first label to the first node in the clusterorchestration platform.
 12. The computer-readable storage medium ofclaim 7, wherein the plurality of nodes comprise virtualized computingsystems and physical computing systems, wherein the clusterorchestration platform schedules the microservice to execute on thefirst node.
 13. A method, comprising: submitting, to a clusterorchestration platform managing a cluster comprising a plurality ofnodes, a microservice to execute on one of the plurality of nodes;executing, by the cluster orchestration platform, the microservice on afirst node of the plurality of nodes; receiving, by the microservicefrom a virtual machine manager, an instance identifier of a virtualmachine instance executing the first node and the microservice;receiving, by the microservice from the virtual machine manager based onthe instance identifier, a plurality of labels applied to the virtualmachine instance; validating, by the microservice, each received labelbased on at least one rule for applying labels in the clusterorchestration platform; receiving, by the microservice from the clusterorchestration platform, an identifier of the first node in the clusterorchestration platform; providing, by the microservice to the clusterorchestration platform, an indication specifying to apply each receivedlabel to the first node in the cluster orchestration platform; applying,by the cluster orchestration platform, each received label to the firstnode in the cluster orchestration platform; and applying, by themicroservice to the first node in the cluster orchestration platform, alabel specifying that labeling of the first node in the clusterorchestration platform has been completed.
 14. The method of claim 13,further comprising: scheduling, by the cluster orchestration platform,the microservice to execute prior to a plurality of jobs scheduled toexecute on the first node.
 15. The method of claim 13, furthercomprising: receiving, by the microservice, a first label of theplurality of labels as a filter value; filtering, by the microservice,the plurality of labels based on the first label of the plurality oflabels, the filtering to exclude at least a second label of theplurality of labels; and applying, by the microservice, the first labelto the first node in the cluster orchestration platform, themicroservice to refrain from applying the second label to the first nodein the cluster orchestration platform based on the filtering.
 16. Themethod of claim 13, further comprising: receiving, by the microservice,a first label of the plurality of labels; determining, by themicroservice, that the first label is not of a syntax required by the atleast one rule for applying labels; and refraining, by the microservice,from applying the first label to the first node in the clusterorchestration platform based on the first label not being of therequired syntax.
 17. The method of claim 16, further comprising:modifying, by the microservice, the first label using a regularexpression; determining, by the microservice, that the modified firstlabel is of the syntax required by the at least one rule for applyinglabels; and applying, by the microservice, the modified first label tothe first node in the cluster orchestration platform, wherein theplurality of nodes comprise virtualized computing systems and physicalcomputing systems, wherein the cluster orchestration platform schedulesthe microservice to execute on the first node.